http://www.ecdl.tuiasi.ro/ro/academice/curricula/programe/ingineri/pa_503_alcp.pdf Algoritmul lui Kucera
• Algoritmul lui Kucera, dezvoltat pentruo masina CREW-PRAM,
pentru problema drumurilor minime poate fi considerat de baza.
• Algoritmul utilizeaza ca date initiale matricea Dn×n a ponderilor
muchiilor unui graf G = (V,E), (V = {1,...,n}, E Ì V×V).
"i,j Î {1,...,n} : D[i,j] =
dij, daca (i,j) Î E
¥, daca (i,j) Ï E
unde dij este distanta dintre nodurile i si j (dii = 0).
• Rezultatul executiei algoritmului lui Kucera este o matrice Cn×n:
C[i,j] =
0, daca i = j
min[((i,i1,…,ik,j)) || drum in G] { D[i,i1]+D[i1,i2]+¼+D[ik,j]}, daca i ¹ j Pseudocod pentru Algoritmul lui Kucera
for all i,j:1 £ i,j £ n par do C[i,j] = D[i,j];
repeat log n times
for all i,j,k: 1 £ i,j,k £ n par do
w[i,k,j] = C[i,k]+C[k,j];
for all i,j: 1 £ i,j £ n par do
C[i,j] = min{C[i,j],mink{w[i,k,j]; k = 1,...,n}};
end
153
Complexitatea
• Operatia min{C[i,j],mink{w[i,k,j]; k = 1,...,n}} poate fi implemntata prin
procedura sum, ,,Å” fiind în acest caz operatorul de minimizare.
• Daca se utilizeaza modelul CREW-PRAM, complexitatea timp a acestei
operatii este O(log n) iar numarul de procesoare utilizate este n/logn.
• Rezulta pentru algoritm un timp de executie T(n)=O(log2n) si un necesar
de procesoare de O(n3/logn).
• Pe o masina CRCW-PRAM, operatia de minimizare anterior mentionata se
poate efectua în timp constant cu n2 procesoare.
• Consecinta este reducerea timpului de executie la O(logn), rezultând însa
o crestere a numarului procesoarelor la O(n4).
Definirea problemei algebrice a
drumurilor
• Inlocuind în algoritmul lui Kucera: D cu A (matricea de adiacenta), + cu “si logic”,
min cu “sau logic”, se obtine un algoritm pentru problema închiderii tranzitive.
Mentionam ca pentru un graf G, problema închiderii tranzitive consta în
determinarea unei matrice Cn×n:
C[i,j]= 1, daca exista î n G un drum de la i la j
0, altfel
• Generalizând, problema algebrica a drumurilor poate fi definita astfel:
Dat fiind un graf ponderat G = (V,E,w), unde w:E® H, iar (H,Å,Ä) formeaza un inel
cu unitate, sa se determine matricea Cn×n astfel încât
C[i,j] = Å w(p)
[p drum de la i la j]
• Obs. Daca p = i0i1...ik-1i k atunci w(p) = Äl = 0
k-1 w[il,il+1].
154
Implementari sistolice
• Foarte numeroase sunt abordarile sistolice ale problemei algebrice a
drumurilor.
• Remarcabila este implementarea algoritmului lui Kleen pe o retea de
tip plasa data de Y. Robert si D. Trystram, 1986
• Parametrii algoritmului sunt T = 5n-2 si A Î O(n2).
Algoritmul lui Kucera
• Algoritmul lui Kucera, dezvoltat pentruo masina CREW-PRAM,
pentru problema drumurilor minime poate fi considerat de baza.
• Algoritmul utilizeaza ca date initiale matricea Dn×n a ponderilor
muchiilor unui graf G = (V,E), (V = {1,...,n}, E Ì V×V).
"i,j Î {1,...,n} : D[i,j] =
dij, daca (i,j) Î E
¥, daca (i,j) Ï E
unde dij este distanta dintre nodurile i si j (dii = 0).
• Rezultatul executiei algoritmului lui Kucera este o matrice Cn×n:
C[i,j] =
0, daca i = j
min[((i,i1,…,ik,j)) || drum in G] { D[i,i1]+D[i1,i2]+¼+D[ik,j]}, daca i ¹ j
Pseudocod pentru Algoritmul lui Kucera
for all i,j:1 £ i,j £ n par do C[i,j] = D[i,j];
repeat log n times
for all i,j,k: 1 £ i,j,k £ n par do
w[i,k,j] = C[i,k]+C[k,j];
for all i,j: 1 £ i,j £ n par do
C[i,j] = min{C[i,j],mink{w[i,k,j]; k = 1,...,n}};
end
153
Complexitatea
• Operatia min{C[i,j],mink{w[i,k,j]; k = 1,...,n}} poate fi implemntata prin
procedura sum, ,,Å” fiind în acest caz operatorul de minimizare.
• Daca se utilizeaza modelul CREW-PRAM, complexitatea timp a acestei
operatii este O(log n) iar numarul de procesoare utilizate este n/logn.
• Rezulta pentru algoritm un timp de executie T(n)=O(log2n) si un necesar
de procesoare de O(n3/logn).
• Pe o masina CRCW-PRAM, operatia de minimizare anterior mentionata se
poate efectua în timp constant cu n2 procesoare.
• Consecinta este reducerea timpului de executie la O(logn), rezultând însa
o crestere a numarului procesoarelor la O(n4).
Definirea problemei algebrice a
drumurilor
• Inlocuind în algoritmul lui Kucera: D cu A (matricea de adiacenta), + cu “si logic”,
min cu “sau logic”, se obtine un algoritm pentru problema închiderii tranzitive.
Mentionam ca pentru un graf G, problema închiderii tranzitive consta în
determinarea unei matrice Cn×n:
C[i,j]= 1, daca exista î n G un drum de la i la j
0, altfel
• Generalizând, problema algebrica a drumurilor poate fi definita astfel:
Dat fiind un graf ponderat G = (V,E,w), unde w:E® H, iar (H,Å,Ä) formeaza un inel
cu unitate, sa se determine matricea Cn×n astfel încât
C[i,j] = Å w(p)
[p drum de la i la j]
• Obs. Daca p = i0i1...ik-1i k atunci w(p) = Äl = 0
k-1 w[il,il+1].
154
Implementari sistolice
• Foarte numeroase sunt abordarile sistolice ale problemei algebrice a
drumurilor.
• Remarcabila este implementarea algoritmului lui Kleen pe o retea de
tip plasa data de Y. Robert si D. Trystram, 1986
• Parametrii algoritmului sunt T = 5n-2 si A Î O(n2).